package persistence.produitcatalogue;

import static javax.persistence.GenerationType.IDENTITY;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import persistence.produitcatalogue.configuration.Accessoire;
import persistence.produitcatalogue.configuration.Couleur;
import persistence.produitcatalogue.configuration.Marque;
import persistence.produitcatalogue.configuration.Stockage;
import persistence.produitcatalogue.configuration.SystemeExploitation;
import persistence.produitcatalogue.configuration.Taille;
import persistence.util.HibernateUtil;

/**
 * 
 * @author Guillaume
 *
 */
@Entity
@Table(name = "PRODUIT_CATALOGUE" )
public class ProduitCatalogue implements Serializable {
	
	private int id;
	
	private String libelle;
	
	private double prix;
	
	private int stockProduit;
	
	private Date dateMiseEnLigne;
	
	private String poids;
	
	private String RAM;
	
	private int visibilite;
	
	private String description;
	
	private Accessoire accessoire;
	
	private Couleur couleur;
	
	private Marque marque;
	
	private Stockage stockage;
	
	private SystemeExploitation systemeExploitation;
	
	private Taille taille;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name="PRODUIT_CATALOGUE_ID")
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(name="LIBELLE", length=80, nullable=false)
	public String getLibelle() {
		return libelle;
	}

	public void setLibelle(String libelle) {
		this.libelle = libelle;
	}

	@Column(name="PRIX", nullable=false)
	public double getPrix() {
		return prix;
	}

	public void setPrix(double prix) {
		this.prix = prix;
	}

	@Column(name="STOCK", nullable=false)
	public int getStockProduit() {
		return stockProduit;
	}

	public void setStockProduit(int stockProduit) {
		this.stockProduit = stockProduit;
	}

	@Column(name="DATE_MISE_EN_LIGNE", nullable=false)
	public Date getDateMiseEnLigne() {
		return dateMiseEnLigne;
	}

	public void setDateMiseEnLigne(Date dateMiseEnLigne) {
		this.dateMiseEnLigne = dateMiseEnLigne;
	}

	@Column(name="POIDS", length=20, nullable=false)
	public String getPoids() {
		return poids;
	}

	public void setPoids(String poids) {
		this.poids = poids;
	}

	@Column(name="RAM", length=20, nullable=false)
	public String getRAM() {
		return RAM;
	}

	public void setRAM(String rAM) {
		RAM = rAM;
	}

	@Column(name="VISIBILITE", nullable=false)
	public int getVisibilite() {
		return visibilite;
	}

	public void setVisibilite(int visibilite) {
		this.visibilite = visibilite;
	}

	@Column(name="DESCRIPTION", length=255, nullable=false)
	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@OneToOne
	@JoinColumn(name="ACCESSOIRE_ID")
	public Accessoire getAccessoire() {
		return accessoire;
	}

	public void setAccessoire(Accessoire accessoire) {
		this.accessoire = accessoire;
	}

	@OneToOne
	@JoinColumn(name="COULEUR_ID")
	public Couleur getCouleur() {
		return couleur;
	}

	public void setCouleur(Couleur couleur) {
		this.couleur = couleur;
	}

	@OneToOne
	@JoinColumn(name="MARQUE_ID")
	public Marque getMarque() {
		return marque;
	}

	public void setMarque(Marque marque) {
		this.marque = marque;
	}

	@OneToOne
	@JoinColumn(name="STOCKAGE_ID")
	public Stockage getStockage() {
		return stockage;
	}

	public void setStockage(Stockage stockage) {
		this.stockage = stockage;
	}

	@OneToOne
	@JoinColumn(name="SYSTEME_EXPLOITATION_ID")
	public SystemeExploitation getSystemeExploitation() {
		return systemeExploitation;
	}

	public void setSystemeExploitation(SystemeExploitation systemeExploitation) {
		this.systemeExploitation = systemeExploitation;
	}

	@OneToOne
	@JoinColumn(name="TAILLE_ID")
	public Taille getTaille() {
		return taille;
	}

	public void setTaille(Taille taille) {
		this.taille = taille;
	}
}
